package dao;

import entry.Voucher;
import pojo.VoucherAndTwoEnterpriseAndInstituty;
import pojo.VoucherCondition;
import util.PageHelper;

import java.util.ArrayList;

public interface VoucherDao {
    /**
     * insertVoucher 如果融资金额不等于凭证信息，新增屏证信息
     * @param voucher 要新增的凭证信息
     * @return boolean 返回新增成功与否
     * @author 谈克思
     */
    boolean insertVoucher(Voucher voucher);

    /**
     * updateVoucher 更改凭证信息中id对应的凭证的金融机构id
     * @param voucher 凭证中id属性用于定位一条凭证信息，instituty_id属性为金融机构id要更改为的值
     * @return boolean 返回更改成功与否
     * @author 谈克思
     */
    boolean updateVoucher(Voucher voucher);

    /**
     * selectVoucherCount 查询凭证信息个数
     * @param voucherCondition 查询条件
     * @return int 返回有凭证信息和收单开单双方企业信息和金融机构信息的VoucherAndTwoEnterpriseAndInstituty对象集合的元素个数
     * @author 金静远
     */
    int selectVoucherCount(VoucherCondition voucherCondition);

    /**
     * selectVoucherList 查询凭证列表
     * @param voucherCondition 查询条件
     * @return ArrayList<VoucherAndTwoEnterpriseAndInstituty> 返回有凭证信息和收单开单双方企业信息和金融机构信息的VoucherAndTwoEnterpriseAndInstituty对象集合
     * @author 闫东杰
     */
    ArrayList<VoucherAndTwoEnterpriseAndInstituty> selectVoucherList(VoucherCondition voucherCondition, PageHelper pageHelper);

    /**
     * selectVoucherDetail 根据id查找融资详情信息
     * @param id Voucher凭证的id
     * @return VoucherAndTwoEnterpriseAndInstituty 返回有凭证信息和收单开单双方企业信息和金融机构信息的VoucherAndTwoEnterpriseAndInstituty对象
     * @author 闫东杰
     */
    VoucherAndTwoEnterpriseAndInstituty selectVoucherDetail(int id);
}
